Content addressable memory (CAM) devices are often used in network switching and routing applications to determine forwarding destinations for data packets. A CAM device can be instructed to compare a selected portion of an incoming packet, typically a destination field within the packet header, with data values, called CAM words, stored in an associative storage array within the CAM device. If the destination field matches a CAM word, the CAM device records a CAM index that identifies the location of the matching CAM word within the storage array, and asserts a match flag to signal the match. The CAM index is then typically used to index another storage array, either within or separate from the CAM device, to retrieve a destination address or other routing information for the packet.
As process geometries shrink, the associative storage arrays of CAM devices, i.e., CAM arrays, become increasingly susceptible to errors induced by alpha-particle bombardment. Such errors are commonly referred to as soft errors and may result in false match or mismatch determinations and ultimately in non-delivery of packets or delivery of packets to incorrect destinations. Accordingly it is desirable to provide some technique for detecting and correcting errors within a CAM device.
In one error detection and correction technique, referred to herein as host-based scanning, a host processor reads the CAM array entry by entry, and compares the array content to an image stored in a backing store (i.e., another memory). Unfortunately this is a relatively slow operation that consumes significant system resources (i.e., in terms of host processing and access port utilization). In another error detection and correction scheme, an error correction code is stored along with each entry within the CAM array and used to detect and correct errors that occur within the entry. Unfortunately, such error correction codes typically require storage of multiple code bits per storage row, significantly reducing the available data storage space within the CAM array.